const Bacon = require("baconjs");
const fetch = require("node-fetch");

// BING、百度、有道平台免费翻译API – 老季博客
// https://www.jiloc.com/44876.html

function getInEnglish(word) {
  const url =
    "http://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i=" +
    encodeURIComponent(word);
  const promise = fetch(url)
    .then((response) => response.json())
    .then((parsedResponse) => {
      //   console.log(parsedResponse);
      return parsedResponse.translateResult[0][0].tgt;
    })
    .catch((e) => console.log(e));
  const stream = Bacon.fromPromise(promise);
  return stream;
}

// getInEnglish("高薪").onValue((word) => console.log(word));

const stream = new Bacon.Bus();

//Functor implements MAP
//Monad is a functor that also implements FlatMap
//what the hell is flatMap?

//flatmap : bind chain flatten
//streams 是 functor

stream
  .flatMap((word) => getInEnglish(word))
  .map((word) => word.toUpperCase())
  .onValue((word) => console.log(word));

stream.push("猫");
stream.push("毛");
stream.push("喵");
